package com.yangming.springboot.service;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yangming.springboot.dao.CusDevPlanDao;
import com.yangming.springboot.dao.SaleChanceDao;
import com.yangming.springboot.query.CusDevPlanQuery;
import com.yangming.springboot.utils.AssertUtil;
import com.yangming.springboot.vo.CusDevPlan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class CusDevPlanService {

    @Autowired
    private CusDevPlanDao cusDevPlanDao;

    @Autowired
    private SaleChanceDao saleChanceDao;


    public Map<String, Object> queryCusDevPlanByParams(CusDevPlanQuery cusDevPlanQuery){
        Map<String, Object> map = new HashMap<>();
        PageHelper.startPage(cusDevPlanQuery.getPage(), cusDevPlanQuery.getLimit());
        PageInfo<CusDevPlan> pageInfo = new PageInfo<CusDevPlan>(cusDevPlanDao.selectById(cusDevPlanQuery.getSid()));
        map.put("code", 0);
        map.put("msg", "");
        map.put("count", pageInfo.getTotal());
        map.put("data", pageInfo.getList());
        return map;
    }

    public void saveCusDevPlan(CusDevPlan cusDevPlan){
        checkParams(cusDevPlan.getSaleChanceId(), cusDevPlan.getPlanItem(), cusDevPlan.getPlanDate());
        cusDevPlan.setIsValid(1);
        cusDevPlan.setCreateDate(new Date());
        cusDevPlan.setUpDate(new Date());
//        AssertUtil.isTrue(cusDevPlanDao.saveCusDevPlan(cusDevPlan) < 1, "save cusdevplan error");
        cusDevPlanDao.saveCusDevPlan(cusDevPlan);
    }

    private void checkParams(Integer saleChanceId, String planItem, Date planDate){
        AssertUtil.isTrue(saleChanceId == null || saleChanceDao.queryById(saleChanceId) == null, "salechanceid error");
        AssertUtil.isTrue(planItem == null, "planitem error");
        AssertUtil.isTrue(planDate == null, "plandate error");
    }

    public void updateCusDevPlan(CusDevPlan cusDevPlan){
        AssertUtil.isTrue(cusDevPlan.getSaleChanceId() == null || saleChanceDao.queryById(cusDevPlan.getSaleChanceId()) == null, "update salechance empty");
        checkParams(cusDevPlan.getSaleChanceId(), cusDevPlan.getPlanItem(), cusDevPlan.getPlanDate());
        cusDevPlan.setUpDate(new Date());
        cusDevPlanDao.updateCusDevPlan(cusDevPlan);
    }

    public void deleteCusDevPlan(Integer id){
        List<CusDevPlan> temp = cusDevPlanDao.selectById(id);
        AssertUtil.isTrue(temp == null, "query error");
        temp.get(0).setIsValid(0); //把valid值设为0，即为“删除”
        cusDevPlanDao.updateCusDevPlan(temp.get(0));
    }
}